package cn.yunhe.controller;

import cn.yunhe.pojo.Product;
import cn.yunhe.service.IProductService;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
@RequestMapping("/mv/product")
public class ProductController1 {

    @Autowired
    IProductService productService;

    /**
     * 前台需要获取到查询的数据列表（集合），同时还需要有分页相关的信息
     * @param model
     * @param pageIndex
     * @param pageSize
     * @return
     */
    @RequestMapping("/queryAll")
    public String queryAllProduct(Model model,Product product,
                                  @RequestParam(defaultValue = "1") Integer pageIndex,
                                  @RequestParam(defaultValue = "3") Integer pageSize){
        //此处执行完分页操作返回的productList其实就是一个Page对象
        //该集合只在控制台输出时才会时Page对象，返回到前端时只有一个List集合，因此就需要将分页的信息存储到一个PageInfo对象中
        List<Product> productList = productService.queryAll(product,pageIndex,pageSize);
        //此处需要注意：要通过构造器传递page信息，这样才能将信息封装到PageInfo的属性中
        //setList方法时PageInfo父类中的方法，和pageInfo中的属性没有关系的（建议看源码）
        PageInfo<Product> pageInfo = new PageInfo<Product>(productList);
        model.addAttribute("pageInfo",pageInfo);
        return "product-list";
    }

    @RequestMapping("/insert")
    @ResponseBody
    public String insertProduct(@RequestBody Product product){
        productService.insertProduct(product);
        return "success";
    }

    /*@RequestMapping("/like")
    public String queryLike(Model model,Product product,
                            @RequestParam(defaultValue = "1") Integer pageIndex,
                            @RequestParam(defaultValue = "3") Integer pageSize){
        List<Product> productList = productService.queryLike(product, pageIndex, pageSize);
        PageInfo<Product> pageInfo = new PageInfo<Product>(productList);
        model.addAttribute("pageInfo",pageInfo);
        return "product-list";
    }*/
}
